/*
 *  Vector.h
 *  T3nsors
 *
 *  Created by Michael Barriault on 09-10-07.
 *  Copyright 2010 University of Guelph. All rights reserved.
 *
 */

#ifndef VECTOR_HEADER
#define VECTOR_HEADER

#include "Scalar.h"

class Vector {
private:
	std::vector<Scalar> T;
public:
	Domain O;
	int N;
	std::string id;
	Vector(void);
	Vector(Domain,int,std::string iid="");
	~Vector(void);
	Scalar& operator()(int);
	double& operator()(int,int,...);
//	double rad(int,...);
	double rad(int);
};

Vector operator-(Vector);
Vector operator+(Vector, Vector);
Vector operator-(Vector, Vector);
Scalar operator*(Vector, Vector);
Vector operator%(Vector, Vector);
Vector operator*(Scalar, Vector);
Vector operator*(Vector, Scalar);
Vector operator*(Vector, double);
Vector operator*(double, Vector);
Vector operator/(Vector, Scalar);
Vector operator/(Vector, double);

Vector diff(Scalar);
Scalar diss(Scalar x);
Vector diss(Vector x);

#endif